/*
 * @copyright: Huang Ding
 * @Author: ding-cx
 * @Date: 2021-10-19 11:23:39
 * @LastEditors: ding-cx
 * @LastEditTime: 2022-06-15 16:41:24
 * @Description: file content
 */
import { actions, audioFile } from "../../http/actions";
import { hc } from "../../hc";
import HcWanBaseCmdService from "./HcWanBaseCmdService";

/**
 * note 机器配置注意点：在海清后台上把声音设置中的 远程控制播放声音 项要取消勾选。才能正常使用以下接口。
 */
export default class HcWanCMDAudioService extends HcWanBaseCmdService {
	/** 获取一个机器的声音播放文件 */
	async getAudioList() {
		const data = { info: {} };
		const res = await this.execCMD(actions.GetAudio, data, true);
		if (res.success) {
			return res.data[0] as hc.http.getAudioList;
		} else {
			this.app.logger.error(
				"获取设备设备声音列表出错 %s %j",
				this.device.deviceId,
				res.data
			);
			throw new Error("获取设备设备声音列表出错" + JSON.stringify(res.data));
		}
	}

	/**
	 *
	 * 播放指定文件声音
	 *
	 * 在海清后台上把声音设置中的 远程控制播放声音 项要取消勾选。才能正常使用接口。
	 *
	 *
	 * @param {(audioFile | string)} audioName 要播放的声音文件名称
	 * @return {*}
	 * @memberof HcWanCMDAudioService
	 */
	async playOneAudio(audioName: audioFile | string) {
		const body: hc.http.playOneAudio = {
			operator: actions.SetAudio,
			info: {
				DeviceID: this.device.deviceId,
				AudioType: 0,
				AudioName: audioName,
			},
		};

		const res = await this.execCMD(actions.GetAudio, body, true);
		if (res.success) {
			return true;
		} else {
			this.app.logger.error("设备播放声音出错 %s %j", this.device.deviceId, res.data);
			throw new Error("设备播放声音出错" + JSON.stringify(res.data));
		}
	}
}
